iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
AI & Data

機器學習不難嘛系列 第 23

Day23-MNIST模型訓練

  • 分享至 

  • xImage
  •  

昨天我們將資料進行處理後就可以進入我們的重頭戲模型訓練啦,首先我們要先用Sequential這個模組來建立模型,那麼Sequential是什麼東西呢?

Sequential是一個在Keras中用來建造網路架構的模組,我們會在裡面使用兩種方法,一個是使用add方法來疊加層數,另一個是利用Dense設定輸入層和輸出層。直接來演示一次給大家看吧。

首先先載入Sequential模組來建立Sequential模型

from keras.models import Sequential
model = Sequential()

再來載入Dense

from keras.layers import Dense

利用add方法和Dense建立輸入層和隱藏層,需要設定的參數有隱藏層神經元數目、輸入層神經元數目、初始化權重(weight)和配置(bias)、激勵函式

model.add(Dense(units=256,
                input_dim=784,
                kernel_initializer='normal',
                activation='relu'))

units=256表示隱藏層神經元有256個

input_dim=784表示輸入層神經元有784個

kernel_initializer='normal'代表的是使用常態分佈的亂數

activation='relu'是指激勵函式使用relu,relu是一個非線性函數,定義為f(x)=max(0,x)。

建立完輸入層來建立輸出層

model.add(Dense(units=10,
                kernel_initializer='normal',
                activation='softmax'))

在這邊不需要設定輸出層,因為它會沿用上面設定好的256個隱藏層神經元

units=10表示輸出層神經元有10個

activation='softmax’是指激勵函式使用softmax,softmax用於多類別分類問題,計算如下:

https://ithelp.ithome.com.tw/upload/images/20231007/20162311N9PqAQ3pTc.png

建立完輸入層、隱藏層和輸出層就可以進行訓練了,直接進行演示:

利用compile方法設定Loss損失函數、最佳化方法(在深度學習使用’adam’效率較高、metrics評估準確度

model.compile(loss='categorical_crossentropy',
              optimizer='adam', metrics=['accuracy'])

最後就可以進行訓練啦

需要的設定參數有特徵值和標籤、訓練資料占比、訓練次數、每次讀取幾筆資料、顯示訓練過程

train_history = model.fit(x=train_feature_normalize,
                          y=train_label_onehot,validation_split=0.2,
                          epochs=10, batch_size=200,verbose=2)

https://ithelp.ithome.com.tw/upload/images/20231007/20162311aTwSr9bljV.png

出現這個結果就是已經訓練完成了


上一篇
Day22-MNIST模型資料預處理
下一篇
Day24-MNIST模型預測
系列文
機器學習不難嘛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言